#include <stdio.h>
// 计算 switch实现 ,使用回调函数
int add(int x, int y)
{
    return x + y;
}
int sub(int x, int y)
{
    return x - y;
}
int mul(int x, int y)
{
    return x * y;
}
int div(int x, int y)
{
    return x / y;
}
void menu(){
    printf("******************\n");
    printf("**1.add    2.sub**\n");
    printf("**3.mul    4.div**\n");
    printf("**     0.exit   **\n");
    printf("******************\n");
}

int main()
{
    menu();
    int num, x, y = 0;
    // pf是一个数组指针，指针指向的数组有4个元素 - 转移表
    int (*pf[5])(int, int) = {0, add, sub, mul, div};
    do {
        printf("please input num \n");
        scanf("%d", &num);
        if(num >=1 && num <=5){
            printf("please input two numbers \n");
            scanf("%d %d", &x, &y);
            // 指向的数组的每个元素的类型是一个函数指针 int(*)(int,int)
            printf("result is %d\n", pf[num](x, y));
        }else{
            printf("exit \n");
        }
        
    } while(num);
    
    return 0;
}
